﻿<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <title></title>
    <script>
        //console.log(get986([1, 6, 6, 9]));
        //构建函数
        //has9(number) ，可以判断number中是否带有数字9；
        //has8(number) ，可以判断number中是否带有数字8；
        //has6(number) ，可以判断number中是否带有数字6；
        //让get986()通过调用has9() / has8() / has6() ，能找出number以内有多少个数字包含：9或者8或6。
        function has9(num) {
            hasx(num, 9)
        };
        function has8(num) {

            return hasx(num, 8)
        };
        function has6(num) {

            return hasx(num, 6)
        };
        function hasx(num, x) {
            for (var i = 0; i < num.length; i++) {
                if (num[i] % x == 0) {
                    return true;
                }
            }
            return false;
        };
        function get986(numbers) {
            for (var i = 0; i < numbers.length; i++) {
                if (has6(numbers[i])) {
                    console.log(i);
                }
                if (has8(numbers[i])) {
                    console.log(i);
                }
                if (has9(numbers[i])) {
                    console.log(i);
                }
            }
        }
        //2.将之前“找出素数”的代码封装成一个函数findPrime(max) ，可以打印出max以内的所有素数。

        //3.自行设计参数，将之前“累加求和”的代码封装成一个函数Sum() ，
        //可以计算任意起始位置、任意步长（如：1, 3, 5……或者0, 5, 10, 15……）的等差数列之和。
        //function sum(number, stat, stepwidth) {
        //    var sum = 0;
        //    for (var i = stat; i < number.length; i += stepwidth) {
        //        sum += number[i];
        //    }
        //    return sum;
        //}
        ////4.封装一个函数，建立一个函数getMaxNumber()，
        ////可以接受任意多各种类型的参数，并找出里面最大的数（忽略数值以外的其他类型）
        //function getMaxNumber() {
        //    var max = arguments[0];
        //    for (var i = 0; i < arguments.length; i++) {
        //        if (arguments[i] < arguments[i + 1]) {
        //            max = arguments[i + 1];
        //        }
        //    }
        //    return max;
        //}
        //console.log(getMaxNumber(1, 3, 2, 4, 56, 7, 65, 139));
        ////5. 封装一个函数swap(arr, i, j) ，可以交换数组arr里下标 i 和 j 的值
        //function swap(arr, i, j) {
        //    var num = arr[i];
        //    arr[i] = arr[j];
        //    arr[j] = num;
        //    return [arr[i], arr[j]]
        //}
        //console.log(swap([1, 25, 36, 43], 1, 2));
        ////6.利用上面的swap()函数，将“冒泡排序”封装成函数bubbleSort()
        //function bubbleSort(number) {
        //    for (var i = 1; i < number.length; i++) {//循环次数为数组的间隔数
        //        for (var j = 0; j < number.length - i; j++) {//循环次数少i次因为i为已经交换的次数
        //            if (number[j] < number[j + 1]) {
        //                swap(number, j, j + 1);
        //            }
        //        }
        //    }
        //    return number;
        //}
        //console.log(bubbleSort([134, 2, 4, 5, 33, 2, 122, 3]));
        ////7.封装函数deleteDuplicated()删除一个数组里面重复的元素
        //function deleteDuplicated(number) {
        //    for (var i = 0; i < number.length; i++) {
        //        for (var j = 0; j < number.length; j++) {
        //            if (i != j) {//不和自己比较
        //                if (number[i] == number[j]) {//如果与数组中的元素相等
        //                    for (var k = j; k < number.length; k++) {
        //                        number[k] = number[k + 1];
        //                    }
        //                } else {

        //                }

        //            }

        //        }
        //    }
        //    number.length = number.length - 1;
        //    return number;
        //}
        //console.log(deleteDuplicated([134, 2, 4, 5, 33, 122, 3]));
        //8.将一个字符串顺序颠倒，比如：'hello,yuanzhan' 变成 'nahznauy,olleh'。
        function invertedOrder(string) {
            var continer = ""
            for (var i = string.length - 1; i >= 0; i--) {
                continer += string[i];
            }
            return continer
        }
        console.log(invertedOrder('hello,yuanzhan'));
        //9.统计出这段文字中有多少个单词：
        //There are two ways to create a RegExp object: a literal notation and a constructor.To indicate strings,
        //the parameters to the literal notation do not use quotation marks while the parameters to the constructor function do use quotation - marks.
        //So the following expressions create the same regular expression
        function statist(string) {
            var exclude = " "
            var num = 1
            for (var i = 0; i < string.length; i++) {
                if (exclude == string[i]) {
                    console.log(num);
                    num++;
                }
            }
            return num;
        }
        console.log(statist("There are two ways to create a RegExp object : a literal notation and a constructor.To indicate strings , the parameters to the literal notation do not use quotation marks while the parameters to the constructor function do use quotation-marks. So the following expressions create the same regular expression"));
    </script>
</head>
<body>

</body>
</html>